import React, { useEffect } from 'react';

export default function ForOf() {
    useEffect(() => {
        // let iterable = [10, 20, 30];

        // for (const value of iterable) {
        //     value += 1;
        //     // console.log(value);
        // }
        // Object.prototype.objcustom = function() {}; 
        // Array.prototype.arrcustom = function() {};

        // let iterable = [3, 5, 7];
        // iterable.foo = 'hello';
        // console.log(iterable);
        // for (let i in iterable) {
        //     console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
        // }
        // for (let i in iterable) {
        //     console.log(i); // logs 3, 5, 7 
        // }

        // for (let i in iterable) {
        //     if (iterable.hasOwnProperty(i)) {
        //         console.log(i); // logs 0, 1, 2, "foo"
        //     }
        // }

        // for (let i of iterable) {
        //     console.log(i); // logs 3, 5, 7
        // }
        // let cars = [
        //     {
        //         'color': 'purple',
        //         'type': 'minivan',
        //         'registration': new Date('2017-01-03'),
        //         'capacity': 7
        //     },
        //     {
        //         'color': 'red',
        //         'type': 'station wagon',
        //         'registration': new Date('2018-03-03'),
        //         'capacity': 5
        //     }
        // ];
        // var p1 = new Promise((resolve, reject) => {
        //     setTimeout(resolve, 1000, 'one');
        // });
        // var p2 = new Promise((resolve, reject) => {
        //     setTimeout(resolve, 1000, 'one');
        // });
        // var p3 = new Promise((resolve, reject) => {
        //     setTimeout(resolve, 1000, 'one');
        // });
        // async function fetch() {
        //     let arr = [p1, p2, p3];
        //     for (const iterator of arr) {
        //         console.log(await iterator);
        //         // let a = await iterator;
        //     }
        // }
        // fetch();
        // function resolve() {
        //     console.log(arguments);
        // }
        // function* test() {
        //     yield setTimeout(resolve, 3000, 'one');
        //     yield setTimeout(resolve, 2000, 'two');
        //     yield setTimeout(resolve, 1000, 'three');
        // }
        // const generator = test();
        // for (const iterator of test()) {
        //     console.log(iterator);

        // }

        // let p1 = new Promise((resolve, rejected) => {
        //     setTimeout(() => {
        //         resolve(123);
        //     }, 100);
        // });
        // p1.then((resolve) => {
        //     console.log(resolve);
        //     throw '错了';
        // }, (reason) => {
        //     return Promise.resolve('success');
        // }).then((res) => {
        //     console.log('resolce 啦', res);
        // }, (reason) => {
        //     console.log('进入到error里了', reason);
        //     throw 'goto catch';
        // }).finally(() => {
        //     console.log('是到finnaly 了吗');
        // }).catch((err) => {
        //     console.log('进入到catch里了', err);
        // }).then((res) => {
        //     console.log('还有么？');
        // }).then((res) => {
        //     console.log('还有么222？');
        // });
        // let arr = [2, 3, 4, 3, 4, 3, 2, 5, 6, 7];
        // function findNum(arr) {
        //     let json = {}, tribelNumber;
        //     arr.map(item => {
        //         if (!json[item]) {
        //             json[item] = [item];
        //         } else {
        //             json[item].push(item);
        //         }
        //     });
        //     for (const [k, v] of Object.entries(json)) {
        //         if (v.length === 3) {
        //             tribelNumber = k;
        //             break;
        //         }
        //     }
        //     console.log(json);
        //     return tribelNumber;
        // }
        // console.log(findNum(arr));
    });
    return (
        <div>
            for of
        </div>
    );
}